package top.zhangjianyong.tools.bill.manager.resolver;

import top.zhangjianyong.tools.entity.Bill;
import top.zhangjianyong.tools.entity.BillFile;
import top.zhangjianyong.tools.entity.WaBill;

import java.io.File;
import java.util.List;

public interface BillFileResolver<T extends Bill> {

    /**
     * 解析文件
     *
     * @param lines
     * @return
     */
    List<WaBill> resolve(List<String> lines, BillFile billFile);

    /**
     * 数据清洗
     *
     * @param lines
     * @return
     */
    List<String> clean(List<String> lines);

    /**
     * 创建账单
     *
     * @param lines
     * @return
     */
    List<T> createBills(List<String> lines, Long fileId);

    /**
     * 保存原始账单
     *
     * @param t
     */
    void saveBill(T t);

    void updateBill(T t);

    T qryByOrderNo(String orderNo,Long fileId);

    /**
     * 获取解析文件平台
     *
     * @return
     */
    String getPlatform();

    /**
     * 判断解析器能否解析文件
     *
     * @param lines
     * @return
     */
    boolean canResolver(List<String> lines);

    /**
     * 转个人账单
     *
     * @param t
     */
    WaBill convert(T t);

    /**
     * 重新解析
     */
    void reload();
}
